В этом документе представлены следующие графики:

  1. График распределения количества отзывов по месяцам;

  2. График распредления отзывов в % (Сколько отзывов было написано на каждый отель);

  3. Диаграмма распределения оценок отзывов по месяцам;

  4. Диаграмма распределения отзывов по сентименту (негативные/позитивные) для каждого отеля;

  5. Сводная таблица с информацией о длине отзывов для каждого отеля (мин-макс, среднее, медиана);

  6. График с частыми существительными, прилагательными и глаголами для каждого отеля (топ-10);

  7. График с наиболее характерными существительными, прилагательными и глаголами, с которыми ассоциируется отель (топ-10).

Общая статистика по отзывам

Сводная таблица по отзывам

В данной таблице представлена информация о количестве отзывов, собранных с Booking и Яндекс Путешествия. К сожалению, отель Кемпински (Мойка 22) не был представлен на Booking.com, поэтому данные по нему были собраны только с Яндекс Путешествия.

data_all_summary = data_all %>% group_by(Hotel) %>% dplyr::summarise(number_of_reviews = n(), stars_mean = round(mean(stars)), stars_median = median(stars), stars_min = min(stars), stars_max = max(stars), min_date = min(date), max_date = max(date)) 

data_all_summary = cbind(data_all_summary, data_all %>% filter(!is.na(review_text)) %>% group_by(Hotel) %>% summarise(NAs = n(), length_mean = round(mean(length),0)) %>% select(-Hotel)) %>% select(Hotel, number_of_reviews, NAs, stars_mean, stars_median, stars_min, stars_max, min_date, max_date, length_mean)

data_all_summary %>%
  datatable(colnames = c('Отель' = 2, 'Кол-во отзывов' = 3, 'Кол-во отзывов с текстом' = 4, 'Ср. оценка отзывов' = 5, 'Медиана оценки отзывов' = 6, 'Мин. оценка' = 7, 'Макс. оценка' = 8, 'Дата первого отзыва' = 9, 'Дата последнего отзыва' = 10, 'Cр. длина отзывов' = 11), options = list(pageLength=7))

Таблица с наиболее длинными отзывами по каждому отелю

data_all %>% group_by(Hotel) %>% slice_max(order_by = length, n = 5) %>% select(Hotel, review_text, date, stars) %>%
  datatable(colnames = c('Отель' = 2, 'Отзыв' = 3, 'Дата' = 4, 'Кол-во звезд' = 4), filter = 'top', options = list(pageLength=10, scrollX='400px', scrollY='350px'))

Сезонность отзывов

C помощью графика можно изучить распределение числа отзывов в конкретные месяца и года среди разных отелей.

Диаграмма отзывов в процентах

Тут бы лучше мотреть за конкретный период, так как отзывы на отель Wawelberg стали появлятся позже всех.

date_month$year = year(date_month$date)

shared_date <- SharedData$new(date_month %>% select(-date))

colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)', 'rgb(114,147,203)', 'blue')

bscols(widths = c(2, 10),
       list(
       filter_checkbox("year", "Год", shared_date, ~year),
       filter_checkbox("Hotel", "Отель", shared_date, ~Hotel)),
  
  plot_ly(shared_date, labels = ~Hotel, values = ~count, colors = "Dark2", type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent', showlegend = F,
        marker = list(line = list(color = '#FFFFFF'))) %>%
    layout(
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
)

Диаграмма распределения оценок отзывов по месяцам

Сводная таблица с информацией о длине отзывов для каждого отеля (мин-макс, среднее, медиана)

Characteristic Astoria, N = 1,145 Four seasons, N = 826 Grand europe, N = 1,527 Lotte, N = 978 Moika 22, N = 597 SO, N = 580 Wawelberg, N = 428
Длина отзыва
    Среднее 26 26 28 23 24 34 36
    Медиана 13 12 16 13 11 17 20
    Мин-Макс 1- 637 1- 451 1- 410 1- 336 1- 467 1- 635 1- 424

Процентное соотношение позитивных и негативных отзывов по отелям

Также было предложено посмотреть на распределение негативных/позитивных отзывов по месяцам. Для определения эмоциональной окраски, использовался словарь “Карта слов”. Для каждого отзыва была вычислена эмоциональная оценка, где позитивным считался отзыв со значением более или равно 0.45, нейтральный отзыв от 0.45 до -0.1 и негативным считались все отзывы. набравшие оценку менее -0.1.

Частовстречаемые слова для каждого отеля (топ-10)

Наиболее характерные слова для каждого отеля

Используемый метод: tf-id.

Идея tf-idf состоит в том, чтобы найти важные слова для содержания каждого документа, уменьшив вес для часто используемых слов и увеличив вес для слов, которые не очень часто используются в коллекции или корпусе документов